﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Libreria.SIG.Negocio;
using Libreria.SIG.Modelo;
using System.Collections.Generic;

public partial class VentaAlmuerzo : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Session["CadenaDeConexion"] = ConfigurationManager.ConnectionStrings["SIG"].ConnectionString;
        Session["restriccion"] = ConfigurationManager.AppSettings["HoraLimiteReserva"];
        if (!Page.IsPostBack)
        {
            Session["CodigoMenu"] = 0;
        }
    }

    protected void LinkButtonAddNew_Click(object sender, EventArgs e)
    {
        FormViewVentas.ChangeMode(FormViewMode.Insert);
        ((Label)FormViewVentas.FindControl("LabelFechaVenta")).Text = DateTime.Now.ToShortDateString();
        FormViewVentas.Visible = true;
    }

    protected void InsertCancelButton_Click(object sender, EventArgs e)
    {
        limpiarFormulario();
    }

    protected void DropDownListIdentificadorUsuario_SelectedIndexChanged(object sender, EventArgs e)
    {
        ((GridView)FormViewVentas.FindControl("GridViewContenidoDelMenu")).DataBind();
        cuentaTiquetesDisponibles();
        valorCompra();
    }

    private void limpiarFormulario()
    {
        FormViewVentas.Controls.Clear();
        FormViewVentas.ChangeMode(FormViewMode.ReadOnly);
        FormViewVentas.Visible = false;
    }

    protected void DropDownListFechaCompra_SelectedIndexChanged(object sender, EventArgs e)
    {
        string valor = ((DropDownList)FormViewVentas.FindControl("DropDownListFechaCompra")).SelectedValue;
        if(valor != "-")
        {
        ((GridView)FormViewVentas.FindControl("GridViewContenidoDelMenu")).Visible = true;
        MenuNegocio menuNegocio = new MenuNegocio();
        List<Libreria.SIG.Modelo.Menu> menuSeleccionado = new List<Libreria.SIG.Modelo.Menu>();
        menuSeleccionado = menuNegocio.consultarMenus(int.Parse(((DropDownList)sender).SelectedValue), Session["CadenaDeConexion"].ToString());
        ((Label)FormViewVentas.FindControl("LabelNombreMenu")).Text = menuSeleccionado[0].Nombre;
        ((HiddenField)FormViewVentas.FindControl("HiddenFieldCodigoMenu")).Value = ((DropDownList)sender).SelectedValue;
        ((HiddenField)FormViewVentas.FindControl("HiddenFieldFechaCompra")).Value = menuSeleccionado[0].FechaMenu.ToLongDateString();
        Session["CodigoMenu"] = ((DropDownList)sender).SelectedValue;
        cuentaTiquetesDisponibles();
        valorCompra();
        }
    }

    protected void PorTiqueteCheckBox_CheckedChanged(object sender, EventArgs e)
    {
        cuentaTiquetesDisponibles();
    }

    private void valorCompra()
    {
        TarifaNegocio tarifa = new TarifaNegocio();
        ExternoNegocio usuario = new ExternoNegocio();
        Int32 codigoUsuario;
        Int32.TryParse(((DropDownList)FormViewVentas.FindControl("DropDownListIdentificadorUsuario")).SelectedValue, out codigoUsuario);
        String perfil = usuario.consultarPerfilesPorUsuario(codigoUsuario, Session["CadenaDeConexion"].ToString()).ToString();
        Int32 codigoMenu; 
        Int32.TryParse(Session["CodigoMenu"].ToString(), out codigoMenu);
        ((TextBox)FormViewVentas.FindControl("ValorCompraTextBox")).Text = tarifa.consultarTarifas(codigoMenu, perfil, Session["CadenaDeConexion"].ToString()).ToString();
    }

    private void cuentaTiquetesDisponibles()
    {
        TiqueteNegocio tiqueteNegocio = new TiqueteNegocio();
        List<Libreria.SIG.Modelo.Tiquete> tiquetes = tiqueteNegocio.consultarTiquetesDisponiblesPorIdentificadorUsuario(((DropDownList)FormViewVentas.FindControl("DropDownListIdentificadorUsuario")).SelectedValue, Session["CadenaDeConexion"].ToString());
        ((Label)FormViewVentas.FindControl("LabelTiquetesDisponibles")).Text = tiquetes.Count.ToString();
        Double valorTiquetes = 0;
        Double valorCompra = 0;
        Double.TryParse(((TextBox)FormViewVentas.FindControl("ValorCompraTextBox")).Text, out valorCompra);
        foreach (Libreria.SIG.Modelo.Tiquete tiquete in tiquetes)
        {
            valorTiquetes += tiquete.ValorTiquete.Value;
        }

        if (tiquetes.Count == 0 || valorCompra > valorTiquetes)
        {
            ((CheckBox)FormViewVentas.FindControl("PorTiqueteCheckBox")).Checked = false;
            ((CheckBox)FormViewVentas.FindControl("PorTiqueteCheckBox")).Enabled = false;
        }
        else
        {
            ((CheckBox)FormViewVentas.FindControl("PorTiqueteCheckBox")).Enabled = true;
        }
        ((TextBox)FormViewVentas.FindControl("ValorCompraTextBox")).ReadOnly = false;
    }

    protected void FormViewVentas_ItemInserting(object sender, FormViewInsertEventArgs e)
    {
        e.Values["PorInternet"] = true;
    }

    protected void FormViewVentas_ItemInserted(object sender, FormViewInsertedEventArgs e)
    {
        limpiarFormulario();
    }

    protected void ObjectDataSourceodsVenta_Inserted(object sender, ObjectDataSourceStatusEventArgs e)
    {
        Labelmensaje.Text = e.OutputParameters["mensaje"].ToString();
    }

    protected void ObjectDataSourceVentas_ObjectDisposing(object sender, ObjectDataSourceDisposingEventArgs e)
    {
        limpiarFormulario();
    }
    protected void ObjectDataSourceVentas_Inserting(object sender, ObjectDataSourceMethodEventArgs e)
    {
        Int32 codigoUsuario;
        Int32.TryParse(((DropDownList)FormViewVentas.FindControl("DropDownListIdentificadorUsuario")).SelectedValue, out codigoUsuario);
        Int32 codigoMenu;
        Int32.TryParse(((HiddenField)FormViewVentas.FindControl("HiddenFieldCodigoMenu")).Value, out codigoMenu);
        e.InputParameters["IdentificadorUsuario"] = codigoUsuario.ToString();
        e.InputParameters["Pagado"] = false.ToString();
        e.InputParameters["Entregado"] = false.ToString();
        e.InputParameters["CodigoMenu"] = codigoMenu.ToString();
    }
    protected void ObjectDataSourceUsuariosPorDocumento_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
    {
        e.InputParameters["numeroDeDocumento"] = ((TextBox)FormViewVentas.FindControl("txtNumeroDocumento")).Text;
    }
}
